package com.example.asapp.user.detail;

import com.example.asapp.base.UserInfo;
import com.example.asapp.user.role.RoleDao;
import com.example.asapp.util.RedisService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Example;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.List;
import java.util.UUID;

@Service
@Slf4j
public class DetailService {

    @Autowired
    DetailDao detailDao;

    public List<Detail> findAll() {
        return detailDao.findAll();
    }


//    String getRandomStr(int length){
//        StringBuilder res = new StringBuilder("");
//        //进行6次循环
//        for(int i = 0; i<length-1 ;i++) {
//            //生成一个97~122之间的int类型整数
//            int intVal = (int)(Math.random()*26+97);
//            //将intValue强制转换为char 类型后连接到re后面
//            res.append((char) intVal);
//
//        }
//        return res.toString();
//    }


    public void deleteByPrimary(String id) {
      detailDao.deleteById(id);
    }

    public Detail saveOne(Detail detail) {
        return detailDao.save(detail);
    }

    public UserInfo login(Detail detail) {
//        HashMap<String,Object> map=new HashMap<>();
        // 优化这个查询
        UserInfo userInfo=new UserInfo();
        List<Detail> details=detailDao.findAll(Example.of(detail));
        if(details.isEmpty()){
            userInfo.setLogin(false);
            log.info("isEmpty login failed");
        }else if(details.size()==1){
            Detail user=details.get(0);
            user.setPassword("");

            userInfo.setLogin(true);
            userInfo.setDetail(user);

            String token=UUID.randomUUID().toString();
            redisService.set(user.getId(),token,3600);
            userInfo.setToken(token);
//            userInfo.setOptions(getOptions());
        }else {
            userInfo.setLogin(false);
        }
        return userInfo;
    }
    @Autowired
    RedisService redisService;

    @Autowired
    RoleDao roleDao;

    private HashMap<String,Object> getOptions() {
        HashMap<String,Object> map=new HashMap<>();
        map.put("roles",roleDao.findAll());
        return map;
    }
}
